package com.cloud.referenceTest;

import java.lang.ref.SoftReference;
import java.util.concurrent.TimeUnit;

/**
 * 软引用
 * 只被软引用关联着的对象，在系统将要发生内存溢出异常前会把这些对象回收，
 * 如果这次回收还没有足够的内存，才会抛出内存溢出异常
 */
public class SoftReferenceTest {
    public static void main(String[] args) {
        //虚拟机配置 -Xms20M -Xmx20M
        SoftReference<byte[]> arr = new SoftReference<>(new byte[1024*1024*10]);   //10M
        System.out.println(arr.get());
        System.gc();
        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(arr.get());

        byte[] bytes = new byte[1024*1024*15];
        System.out.println(arr.get());
    }
}
